package stackUsage;

import java.util.Stack;

/**
 * @author le
 */
public class StackUsage {

    /**
     * 你现在是一场采特殊赛制棒球比赛的记录员。这场比赛由若干回合组成，过去几回合的得分可能会影响以后几回合的得分。
     *
     * 比赛开始时，记录是空白的。你会得到一个记录操作的字符串列表 ops，其中 ops[i] 是你需要记录的第 i 项操作，ops 遵循下述规则：
     *
     * 整数 x - 表示本回合新获得分数 x
     * "+" - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。
     * "D" - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。
     * "C" - 表示前一次得分无效，将其从记录中移除。题目数据保证记录此操作时前面总是存在一个有效的分数。
     * 请你返回记录中所有得分的总和。
     */
    static String[] ops ={"5","-2","4","C","D","9","+","+"};

    //static String[] ops ={"5","2","+"};

    public static void main(String[] args) {

        Stack<Integer> res = new Stack<>();

        for (int i = 0;i < ops.length;i++){
            if (ops[i].equals("+")){
                System.out.println("+");
                int num1 = res.pop();
                int num2 = res.pop();
                res.push(num1);
                res.push(num2);
                res.push(num1+num2);
            }else if (ops[i].equals("D")){
                System.out.println("D");
                int num = res.pop();
                res.push(num);
                res.push(num*2);
            }else if (ops[i].equals("C")){
                System.out.println("C");
                res.pop();
            }else{
                System.out.println("wu");
                res.push(Integer.parseInt(ops[i]));
            }
        }
        int s = 0;
        while(!res.empty()){
            s += res.pop();
        }
        System.out.println(s);
    }
}
